<?php
use Framework\Module\ModuleManager;
use ModuleManager\MMModule;
use Framework\Exception\ConfigErrorException;

/**
 * 其他的基本功能如果不能用，其他测试都不会通过，所以这儿只测少量用例。
 *
 * @author Hoheart
 *        
 */
class ModuleManagerTest extends PHPUnit_Framework_TestCase {

	public function testCustomModuleClass () {
		$mm = ModuleManager::Instance();
		$m = $mm->get('moduleManager');
		
		if (! is_a($m, MMModule::class)) {
			$this->fail('错误：不能获取自定义类的模块。');
		}
	}

	/**
	 * 测试自己获取自己的模块
	 */
	public function testSelfGet () {
		$mm = ModuleManager::Instance();
		$m = $mm->get('moduleManager');
		
		if ($m->getSelfModule() !== $m) {
			$this->fail('错误：不能自己获取这个模块。');
		}
	}

	/**
	 * 测试获取没有依赖配置的模块
	 */
	public function testNoDependModule () {
		try {
			$mm = ModuleManager::Instance();
			$m = $mm->get('noDepend');
		} catch (ConfigErrorException $e) {
			return;
		}
		
		$this->fail('错误：可以加载没有依赖的模块。');
	}
}